/*
 * ArchivoPunteros.h
 *
 *  Created on: 01/06/2013
 *      Author: jonathan
 */
#ifndef ARCHIVOPUNTEROS_H_
#define ARCHIVOPUNTEROS_H_
#include "../../typedefs.hpp"
#include "../../commons/bitstream.h"
#include "../../commons/Compresor.h"
#include "../../general/estructuras/Documento.h"
#include <list>
#include <fstream>
using namespace std;

//Odio c++ y las dependencias circulares
class PosicionesPoxy;
class ArchivoPunteros {
private:
	BitStream bs;
	Compresor *compresor;
	list<PosicionesPoxy*> proxysGenerados;
public:
	ArchivoPunteros(FileName archivo, fstream::openmode);
	ArchivoPunteros(fstream::openmode);
	virtual ~ArchivoPunteros();
	PunteroPosiciones escribir(list<Documento*> &docs, EnteroLargo b);
	list<Documento*> * leerDocumentos(EnteroLargo offset, EnteroLargo cantArchivos, EnteroLargo b);
	void close();
	void posicionar(PunteroPosiciones);
	void posicionar(streampos);
	list<EnteroLargo> * leerListaPosiciones();
};
#endif /* ARCHIVOPUNTEROS_H_ */
